package com.decent.ejfadmin.equity.price.dao;

import com.decent.ejfadmin.common.bean.SupplyProductPrice;
import com.decent.ejfadmin.equity.common.CardPriceInfo;
import com.decent.ejfadmin.equity.common.CardProduct;
import com.decent.ejfadmin.equity.price.dao.provider.SetCardPriceDaoProvider;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * describe:权益产品密价设置
 *
 * @author zhangbin
 * @date 2019/03/19
 */
@Mapper
@Repository
public interface SetCardPriceDao {
    /**
     * 查询产品列表
     *
     * @param productType 运营商/卡种
     * @return
     */
    @Select(" SELECT\n" +
            "  p.id,\n" +
            "  p.product_name as cardProductName\n" +
            "FROM\n" +
            "  yuhuang_supply_product p \n" +
            "WHERE\n" +
            "  p.product_type = #{productType}")
    List<CardProduct> queryProductList(@Param("productType") Integer productType);

    /**
     * 更新密价
     *
     * @param cardPriceInfo 会员+产品+价格+操作者
     * @return
     */
    @UpdateProvider(method = "updateCardPrice", type = SetCardPriceDaoProvider.class)
    int updateCardPrice(@Param("cardPriceInfo") CardPriceInfo cardPriceInfo);

    /**
     * 新增密价
     *
     * @param cardPriceInfo 价格+操作者
     * @param productId     产品
     * @param userId        会员
     * @return
     */
    @Insert(" INSERT INTO yuhuang_user_product_price ( user_id, product_id, state, min_price, max_price,xianyu_price, modify_time, admin, remark )\n" +
            "VALUES\n" +
            "  (#{userId},#{productId},1,#{cardPriceInfo.minPrice},#{cardPriceInfo.minPrice},#{cardPriceInfo.xianyuPrice},NOW(),#{cardPriceInfo.admin},null) ")
    int addCardPrice(@Param("cardPriceInfo") CardPriceInfo cardPriceInfo, @Param("userId") String userId, @Param("productId") String productId);

    /**
     * 删除密价
     *
     * @param cardPriceInfo 会员+产品+价格+操作者
     * @return
     */
    @DeleteProvider(method = "deleteCardPrice", type = SetCardPriceDaoProvider.class)
    int deleteCardPrice(@Param("cardPriceInfo") CardPriceInfo cardPriceInfo);

    /**
     * 更新模板密价
     *
     * @param cardPriceInfo 会员+产品+价格+操作者
     * @param equityModel
     * @return
     */
    @UpdateProvider(method = "updateCardModelPrice", type = SetCardPriceDaoProvider.class)
    int updateCardModelPrice(@Param("cardPriceInfo") CardPriceInfo cardPriceInfo, @Param("equityModel") String equityModel);

    /**
     * 新增模板密价
     *
     * @param cardPriceInfo 价格+操作者
     * @param productId     产品
     * @param equityModel   模板
     * @return
     */
    @Insert(" INSERT INTO yuhuang_supply_model_price_map ( model_id, product_id, min_price, max_price, state, modified_time, admin, remark )\n" +
            "VALUES\n" +
            "  (#{equityModel},#{productId},#{cardPriceInfo.minPrice},#{cardPriceInfo.minPrice},1,NOW(),#{cardPriceInfo.admin},null) ")
    int addCardModelPrice(@Param("cardPriceInfo") CardPriceInfo cardPriceInfo, @Param("equityModel") String equityModel, @Param("productId") String productId);

    /**
     * 删除模板密价
     *
     * @param cardPriceInfo 产品
     * @param equityModel   模板
     * @return
     */
    @DeleteProvider(method = "deleteCardModelPrice", type = SetCardPriceDaoProvider.class)
    int deleteCardModelPrice(@Param("cardPriceInfo") CardPriceInfo cardPriceInfo, @Param("equityModel") String equityModel);

    /**
     * 查询产品id
     *
     * @param productIds
     * @return
     */
    @Select("SELECT id " +
            "FROM " +
            "yuhuang_supply_product where id in(${productIds}) and product_type>310")
    List<Integer> querySupplyProducts(@Param("productIds") String productIds);

    /**
     * 查询密价
     *
     * @param productId 产品id
     * @return
     */
    @Select("SELECT " +
            " p.state, " +
            " p.product_name, " +
            " m.min_price minPrice " +
            "FROM " +
            " yuhuang_supply_product p, " +
            " yuhuang_supply_model_price_map m " +
            "WHERE " +
            " p.id = m.product_id " +
            "AND m.product_id = #{productId} and p.product_type>310 ")
    SupplyProductPrice querySupCardPrice(@Param("productId") Integer productId);

    /**
     * 查询产品名称
     *
     * @param productId 产品id
     * @return
     */
    @Select("SELECT p.state, p.product_name from  yuhuang_supply_product p  " +
            "WHERE  p.id = #{productId} and p.product_type>310 ")
    SupplyProductPrice queryCardProductName(@Param("productId") Integer productId);
}
